<?php

use Hyperf\Database\Schema\Schema;
use Hyperf\Database\Schema\Blueprint;
use Hyperf\Database\Migrations\Migration;

class CreateStatDailyTable extends Migration
{
    protected $connection = 'stat';

    /**
     * 1. 总用户数：当前平台总注册用户数量（汇总无需统计数据）
        2. 活跃用户：当日已打开APP的用户总数，含当日新增用户数（汇总无需统计数据）
        3. 活跃男用户：当日已打开APP的男用户数，含当日新增男用户数（汇总无需统计数据）
        4. 活跃女主播：当日已打开APP的女主播数，含当日新增女用户数（汇总无需统计数据）
        5. 注册用户：当日新增注册用户数量（汇总则累加数据）
        6. 注册男用户：当日新增注册男用户数（汇总则累加数据）
        7. 注册女用户：当日新增注册女用户数（汇总则累加数据）
        8. 充值用户：当日累计充值人数（汇总则累加去重数据）
        9. 充值金额：当日累计充值金额（汇总则累加数据）
        10. 新增充值用户：当日注册且当日充值人数（汇总则累加去重数据）
        11. 新增充值金额：当日注册且当日累计充值金额（汇总则累加数据）
        12. 消费人数：当日累计消费人数，充值账户和收入账户有支出的人数（汇总则累加去重数据）
        13. 消费金额：当日累计消费金额（汇总则累加数据）
        重点：以上数据默认展示所有渠道的汇总数据，但可支持分渠道筛选查看
     */
    public function up(): void
    {
        Schema::create('stat_daily', function (Blueprint $table) {
            $table->increments('id');
            $table->date('dt')->comment('统计日期');
            $table->integer('active_total')->default(0)->comment('活跃总用户');
            $table->integer('active_male')->default(0)->comment('活跃男用户');
            $table->integer('active_host')->default(0)->comment('活跃女主播');
            $table->integer('reg_total')->default(0)->comment('注册用户');
            $table->integer('reg_male')->default(0)->comment('注册男用户');
            $table->integer('reg_female')->default(0)->comment('注册女用户');
            $table->integer('recharge_num')->default(0)->comment('充值用户');
            $table->double('recharge_coin', 10, 1)->default(0.0)->comment('充值金额（金币）');
            $table->integer('new_recharge_num')->default(0)->comment('新增充值用户');
            $table->double('new_recharge_coin', 10, 1)->default(0.0)->comment('新增充值金额（金币）');
            $table->integer('consume_num')->default(0)->comment('消费用户');
            $table->double('consume_coin', 10, 1)->default(0.0)->comment('消费金额（金币）');
            $table->char('channel', 10)->default('')->comment('注册渠道');
            $table->timestamps();
            $table->tinyInteger('flag')->default(1)->comment('记录状态');
            $table->index('dt', 'dt');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('stat_daily');
    }
}
